#ifndef __MQ_CONSUMER_HPP__
#define __MQ_CONSUMER_HPP__

#include "../mq_comm/logger.hpp"
#include "../mq_comm/mq_msg.pb.h"
#include <functional>
#include <memory>

namespace mq
{
    using ConsumerCallback=std::function<void(const std::string&,const BasicProperties* properties,const std::string& body)>;
    /*消费者描述类*/
    struct Consumer
    {
        using ptr=std::shared_ptr<Consumer>;
        std::string tag;//消费者标识
        std::string qname;//消费者订阅的队列名称
        bool auto_ack;//自动确认标志
        ConsumerCallback callback;//消费者回调函数

        Consumer()
        {
            DLOG("new Consumer: %p",this);
        }
        Consumer(const std::string& consumer_tag,const std::string& queue_name,bool ack_flag,const ConsumerCallback& cb)
            :tag(consumer_tag),qname(queue_name),auto_ack(ack_flag),callback(cb)
        {
            DLOG("new Consumer: %p",this);
        }
        ~Consumer()
        {
            DLOG("del Consumer: %p",this);
        }
    };
}

#endif